/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upc.clase.demo.dao.impl;

import edu.upc.clase.demo.dao.LocalDao;
import edu.upc.clase.demo.entity.Local;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

/**
 *
 * @author proyecto
 */
@Repository
public class LocalDaoImpl extends JdbcDaoSupport implements LocalDao {

    @Autowired
    public LocalDaoImpl(DataSource dataSource) {
    setDataSource(dataSource);
    }
    
    @Override
    public Integer insertar(Local local) {
  
      getJdbcTemplate().update(
      "insert into local (nombreLocal,descripcionLocal,direccionLocal,estadoLocal,imagenLocal,fechaCreLocal) values (?,?,?,?,?,?)",
      local.getNombreLocal(), local.getDescripcionLocal(), local.getDireccionLocal(), local.getEstadoLocal(), local.getImagenLocal(),local.getFechaCreLocal());
      return getJdbcTemplate().queryForInt("select last_insert_id()");
    }

    @Override
    public void actualizar(Local local) {
            getJdbcTemplate().update(
                "update local set nombreLocal=? , descripcionLocal=? , direccionLocal=? , estadoLocal=? , imagenLocal=? , fechaCreLocal=? where idLocal = ?",
               local.getNombreLocal(), local.getDescripcionLocal(), local.getDireccionLocal(), local.getEstadoLocal(), local.getImagenLocal(),local.getFechaCreLocal(), local.getIdLocal());    
    }

    @Override
    public void eliminar(Local local) {
    getJdbcTemplate().update(
     "delete from local where idLocal = ?", local.getIdLocal());
        
    }

    @Override
    public List<Local> buscarTodos() {
        return getJdbcTemplate().query(
       "select idLocal,nombreLocal,descripcionLocal,direccionLocal,estadoLocal,imagenLocal,fechaCreLocal from local",
       new BeanPropertyRowMapper<Local>(Local.class));
    }

    @Override
    public Local buscar(Integer idLocal) {
        try {
        return getJdbcTemplate().queryForObject(
         "select idLocal,nombreLocal,descripcionLocal,direccionLocal,estadoLocal,imagenLocal,fechaCreLocal from local where idLocal=?",
         new BeanPropertyRowMapper<Local>(Local.class), idLocal);
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }

    @Override
    public List<Local> buscarPorNombre(String nombreLocal) {
        try {
            Map<String,String> parametros = new HashMap<String,String>();
            parametros.put("nombreLocal","%"+nombreLocal+"%");
            return getJdbcTemplate().query(
            "select * from local where nombreLocal like :nombreLocal",
                    new BeanPropertyRowMapper<Local>(Local.class),parametros);
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }

}
